﻿ using System;
 using System.Collections.Generic;

namespace Test.SysConsole
{
    public class MyClassA
    {

    }
    public class Interview
    {
        #region 简单工厂 VS 工厂方法 VS 抽象工厂
        /*
         * 简单工厂：生产同一等级结构中的任意产品（不支持拓展增加产品）
         * 工厂方法：生产同一等级结构中的固定产品。（支持增加任意产品）
         * 抽象工厂：生产不同产品族的全部产品（不支持拓展增加产品；支持增加产品族）
         */
        #endregion


        /// <summary>
        /// 一列数的规则如下: 1、1、2、3、5、8、13、21、34......  求第30位数是多少， 用递归算法实现。
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public int Foo(int index)
        {
            if (index <= 0)
            {
                return 0;
            }
            else if (index >= 0 && index <= 2)
            {
                return 1;
            }
            else
            {
                return Foo(index - 1) + Foo(index - 2);
            }
        }

        /// <summary>
        /// 冒泡排序
        /// </summary>
        public void BubbleSort()
        {
            int[] array = new int[100];
            for (int i = 0; i < array.Length - 1; i++)
            {
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (array[i] < array[j])
                    {
                        var temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }
        }

        public void RadomNum()
        {
            List<int> sourceInts = new List<int>();
            for (int i = 1; i <= 100; i++)
            {
                sourceInts.Add(i);
            }
            List<int> targetInts = new List<int>();
            int index = new Random().Next(sourceInts.Count);
            int temp = sourceInts.IndexOf(index);
            targetInts.Add(temp);
            sourceInts.RemoveAt(index);
        }
    }
}
